#pragma once

typedef struct IntroSpriteEnt {
  int8 x, y;
  uint8 charnum, flags;
  uint8 ext;
} IntroSpriteEnt;

void Intro_SetupScreen();
void Intro_LoadTextPointersAndPalettes();
void Credits_LoadScene_Overworld_PrepGFX();
void Credits_LoadScene_Overworld_Overlay();
void Credits_LoadScene_Overworld_LoadMap();
void Credits_OperateScrollingAndTileMap();
void Credits_LoadCoolBackground();
void Credits_LoadScene_Dungeon();
void Module18_GanonEmerges();
void Module19_TriforceRoom();
void Intro_InitializeBackgroundSettings();
void Polyhedral_InitializeThread();
void Module00_Intro();
void Intro_Init();
void Intro_Init_Continue();
void Intro_Clear1kbBlocksOfWRAM();
void Intro_InitializeMemory_darken();
void IntroZeldaFadein();
void Intro_FadeInBg();
void Intro_SwordComingDown();
void Intro_WaitPlayer();
void FadeMusicAndResetSRAMMirror();
void Intro_InitializeTriforcePolyThread();
void Intro_InitGfx_Helper();
void LoadTriforceSpritePalette();
void Intro_HandleAllTriforceAnimations();
void Scene_AnimateEverySprite();
void Intro_AnimateTriforce();
void Intro_RunStep();
void Intro_AnimOneObj(int k);
void Intro_SpriteType_A_0(int k);
void Intro_SpriteType_B_0(int k);
void AnimateSceneSprite_DrawTriangle(int k);
void Intro_CopySpriteType4ToOam(int k);
void EXIT_0CCA90(int k);
void InitializeSceneSprite_Copyright(int k);
void AnimateSceneSprite_Copyright(int k);
void InitializeSceneSprite_Sparkle(int k);
void AnimateSceneSprite_Sparkle(int k);
void AnimateSceneSprite_AddObjectsToOamBuffer(int k, const IntroSpriteEnt *src, int num);
void AnimateSceneSprite_MoveTriangle(int k);
void TriforceRoom_PrepGFXSlotForPoly();
void Credits_InitializePolyhedral();
void AdvancePolyhedral();
void TriforceRoom_HandlePoly();
void Credits_AnimateTheTriangles();
void InitializeSceneSprite_TriforceRoomTriangle(int k);
void Intro_SpriteType_B_456(int k);
void AnimateTriforceRoomTriangle_HandleContracting(int k);
void InitializeSceneSprite_CreditsTriangle(int k);
void AnimateSceneSprite_CreditsTriangle(int k);
void Intro_DisplayLogo();
void Intro_SetupSwordAndIntroFlash();
void Intro_PeriodicSwordAndIntroFlash();
void Module1A_Credits();
void Credits_LoadNextScene_Overworld();
void Credits_LoadNextScene_Dungeon();
void Credits_PrepAndLoadSprites();
void Credits_ScrollScene_Overworld();
void Credits_ScrollScene_Dungeon();
void Credits_HandleSceneFade();
void Credits_SpriteDraw_DrawShadow(int k);
void EndSequence_DrawShadow2(int k);
void Ending_Func2(int k, uint8 ain);
void Credits_SpriteDraw_ActivateAndRunSprite(int k, uint8 a);
void Credits_SpriteDraw_PreexistingSpriteDraw(int k, uint8 a);
void Credits_SpriteDraw_Single(int k, uint8 a, uint8 j);
void Credits_SpriteDraw_SetShadowProp(int k, uint8 a);
void Credits_SpriteDraw_AddSparkle(int j_count, uint8 xb, uint8 yb);
void Credits_SpriteDraw_WalkLinkAwayFromPedestal(int k);
void Credits_SpriteDraw_MoveSquirrel(int k);
void Credits_SpriteDraw_CirclingBirds(int k);
void Credits_HandleCameraScrollControl();
void EndSequence_32();
void Credits_FadeOutFixedCol();
void Credits_FadeColorAndBeginAnimating();
void Credits_AddNextAttribution();
void Credits_AddEndingSequenceText();
void Credits_BrightenTriangles();
void Credits_StopCreditsScroll();
void Credits_FadeAndDisperseTriangles();
void Credits_FadeInTheEnd();
void Credits_HangForever();
void CrystalCutscene_InitializePolyhedral();
